﻿using System;

namespace HlELock.Core
{

    /// <summary>
    /// 发卡服务接口
    /// </summary>
    public abstract class CardService : ICardService
    {
        public virtual bool ClearCard()
        {
            return false;
        }

        public virtual bool ClearFactoryCard()
        {
            return false;
        }

        public virtual bool IssueAuthCard()
        {
            return false;
        }

        public virtual bool IssueBuildCard()
        {
            return false;
        }


        /// <summary>
        /// 发客人卡（房卡)
        /// </summary>
        /// <param name="roomNo">房间号</param>
        /// <param name="startDate">开始时间</param>
        /// <param name="endDate">结束时间</param>
        /// <param name="buildingNumber">楼栋</param>
        /// <param name="floorNumber">楼层</param>
        ///<param name="subRoomNumber">套间内房间号</param>
        /// <returns>卡号</returns>
        public abstract string IssueCard(string roomNo, DateTime startDate, DateTime endDate, int buildingNumber = 0, int floorNumber = 0, int subRoomNumber = 0);

        /// <summary>
        /// 退房，退卡
        /// </summary>
        /// <returns></returns>
        public abstract string IssueCheckOutCard();


        public virtual bool IssueClearCard()
        {
            return false;
        }

        public virtual bool IssueControlAuthCard()
        {
            return false;
        }

        public virtual bool IssueEmergencyCard()
        {
            return false;
        }

        public virtual bool IssueFactoryInfoCard()
        {
            return false;
        }

        public virtual bool IssueFactoryTestCard()
        {
            return false;
        }

        public virtual bool IssueFloorCard()
        {
            return false;
        }

        public virtual bool IssueGroupCard()
        {
            return false;
        }

        public virtual bool IssueGroupSettingCard()
        {
            return false;
        }

        public virtual bool IssueInfoCard()
        {
            return false;
        }

        public virtual bool IssueLockCard()
        {
            return false;
        }

        public virtual bool IssueLostCard()
        {
            return false;
        }

        public virtual bool IssuePasswordCard()
        {
            return false;
        }

        public virtual bool IssueRecordCard()
        {
            return false;
        }

        public virtual bool IssueSetupCard()
        {
            return false;
        }

        public virtual bool IssueTimeCard()
        {
            return false;
        }

        /// <summary>
        /// 读取卡片信息
        /// </summary>
        /// <returns></returns>
        public abstract CardDetailInfo ReadCard();
    }
}
